}
}
- page_list_splice_init(&d->arch.relmem_list, list);
+ page_list_move(list, &d->arch.relmem_list);
out:
spin_unlock_recursive(&d->page_alloc_lock);
}
/* list is empty at this point. */
- if ( !page_list_empty(&d->arch.relmem_list) )
- {
- *list = d->arch.relmem_list;
- INIT_PAGE_LIST_HEAD(&d->arch.relmem_list);
- }
+ page_list_move(list, &d->arch.relmem_list);
out:
spin_unlock_recursive(&d->page_alloc_lock);
u32 tlbflush_timestamp;
};
-#ifndef page_list_entry
-static inline void
-page_list_splice_init(struct page_list_head *list, struct page_list_head *head)
-{
- if ( !page_list_empty(list) )
- {
- if ( head->next )
- head->tail->list.next = page_to_mfn(list->next);
- else
- head->next = list->next;
- head->tail = list->tail;
- INIT_PAGE_LIST_HEAD(list);
- }
-}
-#else
-# define page_list_splice_init list_splice_init
-#endif
-
#define set_page_count(p,v) atomic_set(&(p)->_count, v - 1)
/*
return page;
}
-
+static inline void
+page_list_move(struct page_list_head *dst, struct page_list_head *src)
+{
+ if ( !page_list_empty(src) )
+ {
+ *dst = *src;
+ INIT_PAGE_LIST_HEAD(src);
+ }
+}
static inline void
page_list_splice(struct page_list_head *list, struct page_list_head *head)
{
list_del(&__pg->list); \
__pg; \
}) : NULL)
+# define page_list_move(dst, src) (!list_empty(src) ? \
+ list_replace_init(src, dst) : (void)0)
# define page_list_for_each(pos, head) list_for_each_entry(pos, head, list)
# define page_list_for_each_safe(pos, tmp, head) \
list_for_each_entry_safe(pos, tmp, head, list)